@echo off
chcp 65001 >nul 2>&1
setlocal EnableDelayedExpansion

REM Flutter Reset Windows 双击执行脚本
REM 作用：完全重置 Flutter 项目，清理所有缓存和构建文件

echo 🔄 开始重置 Flutter 项目...
echo ======================================

REM 获取脚本所在目录（项目根目录）
set "SCRIPT_DIR=%~dp0"
cd /d "%SCRIPT_DIR%"

echo 📁 当前目录: %CD%
echo ⏰ 开始时间: %DATE% %TIME%

REM 检查是否为 Flutter 项目
if not exist "pubspec.yaml" (
    echo ❌ 错误：当前目录不是 Flutter 项目！
    echo 请确保脚本位于 Flutter 项目根目录。
    pause
    exit /b 1
)

echo ✅ 检测到 Flutter 项目

REM 显示项目信息
for /f "tokens=2 delims= " %%a in ('findstr "^name:" pubspec.yaml 2^>nul') do set "PROJECT_NAME=%%a"
for /f "tokens=2 delims= " %%a in ('findstr "^version:" pubspec.yaml 2^>nul') do set "PROJECT_VERSION=%%a"

if defined PROJECT_NAME (
    echo 📄 项目名称: !PROJECT_NAME!
)
if defined PROJECT_VERSION (
    echo 🏷️  项目版本: !PROJECT_VERSION!
)

echo.
echo ⚠️  警告：此操作将删除所有构建文件和缓存！
echo 🔍 将执行以下操作：
echo    1. 清理 Flutter 项目 ^(flutter clean^)
echo    2. 删除构建目录 ^(build/^)
echo    3. 删除 Dart 工具缓存 ^(.dart_tool/^)
echo    4. 删除 pub 缓存锁定文件 ^(pubspec.lock^)
echo    5. 删除 iOS 构建缓存 ^(ios/Pods/, ios/.symlinks/^)
echo    6. 删除 Android 构建缓存 ^(.gradle/, android/.gradle/^)

choice /c YN /t 10 /d N /m "确定要继续重置吗? ^(Y/N^)，10秒后自动取消"
if %ERRORLEVEL%==2 (
    echo ❌ 用户取消重置操作
    goto :end
)

echo.
echo 🚀 开始重置操作...
echo.

REM 步骤 1: Flutter Clean
echo 🧹 步骤 1/6: 执行 flutter clean...
call flutter clean
if %ERRORLEVEL%==0 (
    echo ✅ Flutter clean 完成
) else (
    echo ⚠️  Flutter clean 执行失败，继续其他步骤
)

echo.

REM 步骤 2: 删除 build 目录
echo 🗑️  步骤 2/6: 删除 build 目录...
if exist "build" (
    rmdir /s /q "build" 2>nul
    if not exist "build" (
        echo ✅ build 目录已删除
    ) else (
        echo ⚠️  build 目录删除失败
    )
) else (
    echo ✅ build 目录不存在
)

REM 步骤 3: 删除 .dart_tool 目录
echo 🗑️  步骤 3/6: 删除 .dart_tool 目录...
if exist ".dart_tool" (
    rmdir /s /q ".dart_tool" 2>nul
    if not exist ".dart_tool" (
        echo ✅ .dart_tool 目录已删除
    ) else (
        echo ⚠️  .dart_tool 目录删除失败
    )
) else (
    echo ✅ .dart_tool 目录不存在
)

REM 步骤 4: 删除 pubspec.lock 文件
echo 🗑️  步骤 4/6: 删除 pubspec.lock 文件...
if exist "pubspec.lock" (
    del "pubspec.lock" 2>nul
    if not exist "pubspec.lock" (
        echo ✅ pubspec.lock 文件已删除
    ) else (
        echo ⚠️  pubspec.lock 文件删除失败
    )
) else (
    echo ✅ pubspec.lock 文件不存在
)

REM 步骤 5: 清理 iOS 相关文件
echo 🗑️  步骤 5/6: 清理 iOS 构建缓存...
if exist "ios" (
    if exist "ios\Pods" (
        rmdir /s /q "ios\Pods" 2>nul
        echo ✅ iOS Pods 目录已删除
    )
    if exist "ios\.symlinks" (
        rmdir /s /q "ios\.symlinks" 2>nul
        echo ✅ iOS .symlinks 目录已删除
    )
    if exist "ios\Podfile.lock" (
        del "ios\Podfile.lock" 2>nul
        echo ✅ iOS Podfile.lock 文件已删除
    )
    echo ✅ iOS 缓存清理完成
) else (
    echo ✅ iOS 目录不存在
)

REM 步骤 6: 清理 Android 相关文件
echo 🗑️  步骤 6/6: 清理 Android 构建缓存...
if exist "android" (
    if exist ".gradle" (
        rmdir /s /q ".gradle" 2>nul
        echo ✅ 根目录 .gradle 已删除
    )
    if exist "android\.gradle" (
        rmdir /s /q "android\.gradle" 2>nul
        echo ✅ Android .gradle 目录已删除
    )
    echo ✅ Android 缓存清理完成
) else (
    echo ✅ Android 目录不存在
)

echo.
echo 🎉 项目重置完成！
echo ======================================
echo 📝 已完成的清理操作：
echo    ✅ Flutter 项目清理
echo    ✅ 构建文件删除
echo    ✅ Dart 工具缓存清理  
echo    ✅ 依赖锁定文件删除
echo    ✅ iOS 平台缓存清理
echo    ✅ Android 平台缓存清理

echo.
echo 💡 下一步建议：
echo    1. 运行 'flutter pub get' 重新获取依赖包
echo    2. 运行 'flutter doctor' 检查开发环境
echo    3. 重新构建项目测试功能

:end
echo.
echo ⏰ 完成时间: %DATE% %TIME%
echo ======================================

REM 等待用户按键后关闭
echo.
echo 按任意键关闭窗口...
pause >nul
